package com.ihrm.domain.company;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;


/**
 * 使用jpa操作数据库
 *   配置实体类和数据库表的映射关系：jpa注解
 *     1. 实体类和数据库表映射关系：
 *     2. 实体类属性和数据库字段映射关系：
 *        2.1 主键属性的映射
 *        2.2 普通属性和数据库字段映射关系
 * // Hibernate根据这些注解自动生成表结构和SQL
 *
 * Hibernate是什么
 * Hibernate是一个开源的对象关系映射（ORM）框架，用于Java应用程序。它提供了一种将面向对象的Java实体映射到关系型数据库表的方式。
 * 核心概念
 * ORM（Object-Relational Mapping）：
 * 将Java对象映射到数据库表
 * 将对象属性映射到表字段
 * 提供了一种用面向对象方式操作数据库的方法
 * 工作原理：
 * 通过配置文件或注解定义对象与数据库表的映射关系
 * 在运行时自动生成SQL语句
 * 管理对象的生命周期和状态
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "co_company")
public class Company implements Serializable {
    private static final long serialVersionUID = 594829320797158219L;
    //ID
    @Id
    private String id;
    /**
     * 公司名称
     */
    private String name;
    /**
     * 企业登录账号ID
     */
    private String managerId;
    /**
     * 当前版本
     */
    private String version;
    /**
     * 续期时间
     */
    private Date renewalDate;
    /**
     * 到期时间
     */
    private Date expirationDate;
    /**
     * 公司地区
     */
    private String companyArea;
    /**
     * 公司地址
     */
    private String companyAddress;
    /**
     * 营业执照-图片ID
     */
    private String businessLicenseId;
    /**
     * 法人代表
     */
    private String legalRepresentative;
    /**
     * 公司电话
     */
    private String companyPhone;
    /**
     * 邮箱
     */
    private String mailbox;
    /**
     * 公司规模
     */
    private String companySize;
    /**
     * 所属行业
     */
    private String industry;
    /**
     * 备注
     */
    private String remarks;
    /**
     * 审核状态
     */
    private String auditState;
    /**
     * 状态
     */
    private Integer state;
    /**
     * 当前余额
     */
    private Double balance;
    /**
     * 创建时间
     */
    private Date createTime;
}